import axios from '@/utils/request'

/*  获取用户权限菜单列表（左边菜单）
*   url 接口路径
*/
export const getMenuList = (url: string, data: object = {}): any => {
    return new Promise((resolve, reject) => {
        axios.get(url, { params: data })
            .then(response => {
                resolve(response.data); // 成功时解析Promise并传递数据
            })
            .catch(error => {
                reject(error); // 失败时拒绝Promise并传递错误信息
            })
    })
}

/*  获取用户权限菜单列表（全部菜单）
*   url 接口路径
*   size 每页显示多少条
*   page 当前页
*/
export const getMenuAllList = (url: string, data: object = {}): any => {
    return new Promise((resolve, reject) => {
        axios.get(url, { params: data })
            .then(response => {
                resolve(response.data); // 成功时解析Promise并传递数据
            })
            .catch(error => {
                reject(error); // 失败时拒绝Promise并传递错误信息
            })
    })
}

/*  添加菜单或子菜单接口
*   url 接口路径
*   id: 菜单id  添加不用，编辑时必要
*   title: 菜单标题
*   name: 路由名称
*   url: 路由地址
*   icon: 菜单图标
*   is_router: 是否路由，0是，1按钮
*   parent_id:  路由父级id
*   sort: 0: 排序
*   is_show: true 是否显示
*/
export const menuAdd = (url: string, data: object = {}): any => {
    return new Promise((resolve, reject) => {
        axios.post(url, data)
            .then(response => {
                resolve(response.data); // 成功时解析Promise并传递数据
            })
            .catch(error => {
                reject(error); // 失败时拒绝Promise并传递错误信息
            })
    })
}

/*  删除菜单接口
*   url 接口路径
*   id 菜单id
*/
export const menuDel = (url: string, data: object = {}): any => {
    return new Promise((resolve, reject) => {
        axios.post(url, data)
            .then(response => {
                resolve(response.data); // 成功时解析Promise并传递数据
            })
            .catch(error => {
                reject(error); // 失败时拒绝Promise并传递错误信息
            })
    })
}

/*  是否显示菜单接口
*   url 接口路径
*   id 菜单id
*/
export const menuIsShow = (url: string, data: object = {}): any => {
    return new Promise((resolve, reject) => {
        axios.post(url, data)
            .then(response => {
                resolve(response.data); // 成功时解析Promise并传递数据
            })
            .catch(error => {
                reject(error); // 失败时拒绝Promise并传递错误信息
            })
    })
}

/*  获取权限管理用户列表
*   url 接口路径
*   size 每页显示多少条
*   page 当前页
*/
export const getUserList = (url: string, data: object = {}): any => {
    return new Promise((resolve, reject) => {
        axios.get(url, { params: data })
            .then(response => {
                resolve(response.data); // 成功时解析Promise并传递数据
            })
            .catch(error => {
                reject(error); // 失败时拒绝Promise并传递错误信息
            })
    })
}

/*  添加用户
*   url 接口路径
*   name 名称
*   pwd 密码
*   repwd 确认密码
*/
export const userAdd = (url: string, data: object = {}):any => {
    return new Promise((resolve, reject) => {
        axios.post(url, data)
            .then(response => {
                resolve(response.data); // 成功时解析Promise并传递数据
            })
            .catch(error => {
                reject(error); // 失败时拒绝Promise并传递错误信息
        })
    })
}

/*  编辑用户
*   id
*   url 接口路径
*   name 名称
*   pwd 密码
*   repwd 确认密码
*/
export const userEdit = (url: string, data: object = {}):any => {
    return new Promise((resolve, reject) => {
        axios.post(url, data)
            .then(response => {
                resolve(response.data); // 成功时解析Promise并传递数据
            })
            .catch(error => {
                reject(error); // 失败时拒绝Promise并传递错误信息
        })
    })
}

/*  删除权限用户接口
*   url 接口路径
*   id 菜单id
*/
export const userDel = (url: string, data: object = {}): any => {
    return new Promise((resolve, reject) => {
        axios.post(url, data)
            .then(response => {
                resolve(response.data); // 成功时解析Promise并传递数据
            })
            .catch(error => {
                reject(error); // 失败时拒绝Promise并传递错误信息
            })
    })
}

/*  是否显示菜单接口
*   url 接口路径
*   id 菜单id
*/
export const userIsShow = (url: string, data: object = {}): any => {
    return new Promise((resolve, reject) => {
        axios.post(url, data)
            .then(response => {
                resolve(response.data); // 成功时解析Promise并传递数据
            })
            .catch(error => {
                reject(error); // 失败时拒绝Promise并传递错误信息
            })
    })
}

/*  用户列表切换角色
*   id
*   r_id 权限id组
*/
export const userChangeRole = (url: string, data: object = {}):any => {
    return new Promise((resolve, reject) => {
        axios.post(url, data)
            .then(response => {
                resolve(response.data); // 成功时解析Promise并传递数据
            })
            .catch(error => {
                reject(error); // 失败时拒绝Promise并传递错误信息
        })
    })
}

/*  获取权限管理角色列表
*   url 接口路径
*   size 每页显示多少条
*   page 当前页
*/
export const getRoleList = (url: string, data: object = {}): any => {
    return new Promise((resolve, reject) => {
        axios.get(url, { params: data })
            .then(response => {
                resolve(response.data); // 成功时解析Promise并传递数据
            })
            .catch(error => {
                reject(error); // 失败时拒绝Promise并传递错误信息
            })
    })
}

/*  删除权限角色接口
*   url 接口路径
*   id 菜单id
*/
export const roleDel = (url: string, data: object = {}): any => {
    return new Promise((resolve, reject) => {
        axios.post(url, data)
            .then(response => {
                resolve(response.data); // 成功时解析Promise并传递数据
            })
            .catch(error => {
                reject(error); // 失败时拒绝Promise并传递错误信息
            })
    })
}

/*  是否显示角色接口
*   url 接口路径
*   id 菜单id
*/
export const roleIsShow = (url: string, data: object = {}): any => {
    return new Promise((resolve, reject) => {
        axios.post(url, data)
            .then(response => {
                resolve(response.data); // 成功时解析Promise并传递数据
            })
            .catch(error => {
                reject(error); // 失败时拒绝Promise并传递错误信息
            })
    })
}

/*  添加角色
*   name 名称
*   perssion_id 权限id组
*   is_show: 是否开启，0是，1否
*/
export const roleAdd = (url: string, data: object = {}):any => {
    return new Promise((resolve, reject) => {
        axios.post(url, data)
            .then(response => {
                resolve(response.data); // 成功时解析Promise并传递数据
            })
            .catch(error => {
                reject(error); // 失败时拒绝Promise并传递错误信息
        })
    })
}

/*  编辑角色
*   id
*   name 名称
*   perssion_id 权限id组
*   is_show: 是否开启，0是，1否
*/
export const roleEdit = (url: string, data: object = {}):any => {
    return new Promise((resolve, reject) => {
        axios.post(url, data)
            .then(response => {
                resolve(response.data); // 成功时解析Promise并传递数据
            })
            .catch(error => {
                reject(error); // 失败时拒绝Promise并传递错误信息
        })
    })
}

/*  分配权限角色
*   id
*   perssion_id 权限id组
*/
export const roleAllocationt = (url: string, data: object = {}):any => {
    return new Promise((resolve, reject) => {
        axios.post(url, data)
            .then(response => {
                resolve(response.data); // 成功时解析Promise并传递数据
            })
            .catch(error => {
                reject(error); // 失败时拒绝Promise并传递错误信息
        })
    })
}

/*  获取所有权限角色列表  */
export const roleAllList = (url: string, data: object = {}):any => {
    return new Promise((resolve, reject) => {
        axios.get(url, {params: data})
            .then(response => {
                resolve(response.data); // 成功时解析Promise并传递数据
            })
            .catch(error => {
                reject(error); // 失败时拒绝Promise并传递错误信息
        })
    })
}